# www.numpy.org.cn
import numpy as np
# 自制的数据集
import dataset 
# 绘图工具库
from matplotlib import pyplot as plt

# 1 获取100组numpy数组随机数据
m=100
xs,ys = dataset.get_xy_dateset4(m)
# 2 限制xy坐标量程 
#   不然图片的xy轴会根据数据发生变动
# plt.xlim(0,1)
# plt.ylim(0,1.2)
# 3 这节课增加了偏置项b
w = 0.1
b = 0.1
# y_pre = w * xs + b

# 学习率alpha
alpha = 0.01

# 因为学习率和只学习一次 
# 没那么快线性拟合
# 多来几次
for _ in range(100):
    # 循环100次 依次取出数据处理
    for i in range(100):
        x = xs[i]
        y = ys[i]
        # a = x ^ 2
        # b = -2 * x * y
        # c = y ^ 2
        # 斜率k = 2aw+b
        # 对w b求导 看03理论
        dedw = 2*x**2*w+2*x*b-2*x*y
        dedb = 2*b+2*x*w-2*y
        # 更新w b
        w = w-alpha*dedw
        b = b-alpha*dedb

        if i%20==0:
            # 8.1 先清空下窗口 
            plt.clf()
            # 8.2 重新把点线画上去
            plt.scatter(xs,ys)
            y_pre = w*xs+b
            # 8.3 限制xy坐标量程 
            #   不然图片的xy轴会根据数据发生变动
            plt.xlim(0,1)
            plt.ylim(0,1.2)

            plt.plot(xs,y_pre)
            # 8.4 让图片更新没那么快 来个延时
            plt.pause(0.01)


# plt.show()


